package main

import (
	"fmt"
)

// byte 和rune 类型

// Go语言中为了处理非ASCII 码类型的字符，定义了新的rune类型

func main() {
	s := "沙河"
	// len() 得到的是byte字节的数量
	n := len(s) // 求字符串s 的长度，把长度保存到变量n中
	fmt.Println(n)

	// for i := 0; i < len(s); i++ {
	// 	fmt.Println(s[i])
	// 	fmt.Printf("%c\n", s[i]) // %c :字符
	// }

	for _, c := range s { // 从字符串中拿出具体的字符
		fmt.Printf("%c\n", c) // %c : 字符
	}

	// "Hello" => 'H' 'e' 'l' 'l' 'o'
	// 字符串修改
	s2 := "白萝卜"      // => '白' '萝' '卜'
	s3 := []rune(s2) // 把字符串强制转换成一个rune切片
	s3[0] = '红'
	fmt.Println(string(s3)) // 把rune切片强制转换成字符串

	c1 := "红"
	c2 := '红' // rune(int32)
	fmt.Printf("c1: %T\n", c1)
	fmt.Printf("c2: %T\n", c2)

	c3 := "H"       //string
	c4 := byte('H') // int8
	fmt.Printf("c3: %T c4: %T\n", c3, c4)
	fmt.Printf("%d\n", c4)

	// 类型转换
	m := 10
	var f float64
	f = float64(m)
	fmt.Printf("%T\n", f)

}
